/*
 * CClient.h
 *
 *  Created on: 05.03.2012
 *      Author: caffeine
 */

#ifndef __CClient_H_
#define __CClient_H_


#include <lampe/network/IClient.h>
#include "../thread/CThread.h"
#include <lampe/stream/IReader.h>
#include <lampe/stream/IWriter.h>

#include <lampe/network/IClientCallback.h>

namespace lampe{
namespace network{
/**
 * @class CClient
 * Базовый класс для создания сетевого клиента
 */
class CClient:public virtual IClient,public lampe::thread::CThread{
private:
	
	IClientCallback*callback;
public:

	/**
	 * Метод вызываемый при подключении клиента
	 */
	virtual void onConnected();

	/**
	 * Метод, вызываемый при отключении клиента
	 */
	virtual void onDisconnected();

	virtual void threadRunning();
	/*
	 * Констурктор
	 * */
	CClient(IClientCallback*callback);
	virtual void readData();

	/**
	 * Диструктор
	 */
	virtual ~CClient();
};

}//namespace network
}//namespace lampe

#endif /* CClient_H_ */
